package com.example.jvm.lesson11;

import java.util.concurrent.CompletableFuture;

/**
 * @Date 2024-01-22
 * @Author Jonathan
 * 调用thenRun方法执行第二个任务时，则第二个任务和第一个任务是共用同一个线程池。
 * 调用thenRunAsync执行第二个任务时，则第一个任务使用的是你自己传入的线程池，第二个任务使用的是ForkJoin线程池
 */
public class FutureTest5 {
    public static void main(String[] args) throws Exception {
        // 这种就是串行执行
        CompletableFuture<Void> thenRun = CompletableFuture.supplyAsync(() -> {
            System.out.println("任务第一步");
            return "hello world";
        }).thenAccept((str) -> {
            // thenAccept是接受前面一个任务的返回值作为入参，同时他自己没有返回值
            System.out.println("第一步的任务结果是:" + str);
        });
        System.out.println(thenRun.get());
    }
}
